The evolution of computers has brought convenience and information to the masses. In the early days, a computer program included the data that it used to operate. Except for any user-entered data that was processed by the application, data or information applications typically contained the information in local storage locations, such as registers, magnetic or optical disks, and/or hard drives. At compile-time, the compiler typically retrieved the data and made that data available to the application during runtime. With the growth of networking and the Internet, it became possible, and effective, to place data in a location remote from the running application. As this distributed computing grew, computer applications were implemented with variables or properties that were unassigned by the application. Instead, the computer application accessed the Internet or some other remote network to receive the data used in running the application. The distributed nature of this software application paradigm opened the door for dynamic information or processing applications in which remote data could be obtained in almost real-time allowing the user to view current, up to date information.
The process of receiving the incoming raw data and assigning it to the appropriate variables or properties within computer applications is generally referred to as data binding or data routing. Merely receiving a single instance of data is relatively straight forward. Data, that is associated with particular variables or properties, is simply copied to those variables or properties defined within the application. The difficulty arises in dynamic applications, where the information can continually change.
In order to implement such dynamic applications, a developer typically codes data monitors for each variable or property for which data is to be monitored. The developer then also associates the monitors with each data expression that references the variable or property. Because a monitor function is coded for each such variable or property, the developer needs to know, in advance, what variables or properties need to be watched. If incoming data or properties do not conform to what the developer expected, source data may not be supplied to its appropriate destination or may not be properly updated, and the information system breaks down. These problems have spurred the adoption of loose standards for binding and monitoring data. These loose standards, however, still provide for the developer to specifically define the variable or property to be monitored. The developer would typically include a specific group of code or script that would monitor for the data changes and then set the properties to the new value or changed data or properties.